/**
 * Copyright (c) 2011 eelpo.com
 * All rights reserved.
 */
package com.eelpo.common.query;

import com.eelpo.common.query.expression.OrderExpression;

/**
 * <pre>
 * 
 * 排序表达式工厂代理类
 * 
 * </pre>
 * 
 * @author <a href="mailto:Brian@eelpo.com">汪洪州</a>
 * @since 1.0
 */
public class Order {

	/**
	 * 将属性按ASC排序
	 * 
	 * @param property
	 *            属性名
	 * @return 返回排序表达式
	 */
	public static OrderExpression asc(String property) {
		return OrderExpression.getAscOrderExpression(property);
	}

	/**
	 * 将属性按DESC排序
	 * 
	 * @param property
	 *            属性名
	 * @return 返回排序表达式
	 */
	public static OrderExpression desc(String property) {
		return OrderExpression.getDescOrderExpression(property);
	}

	/**
	 * 将属性按指定的规则排序
	 * 
	 * @param property
	 *            属性名
	 * @param mode
	 *            排序规则，ASC或者DESC
	 * @return 返回排序表达式
	 */
	public static OrderExpression order(String property, String mode) {
		return OrderExpression.getOrderExpression(property, mode);
	}

	/**
	 * 将属性按指定的规则排序
	 * 
	 * @param property
	 *            属性名
	 * @param mode
	 *            排序规则，ASC或者DESC
	 * @return 返回排序表达式
	 */
	public static OrderExpression order(String order) {
		return OrderExpression.getOrderExpression(order);
	}

	/**
	 * 将属性按指定的规则排序
	 * 
	 * @param property
	 *            属性名
	 * @param mode
	 *            排序规则，ASC或者DESC
	 * @return 返回排序表达式
	 */
	public static OrderExpression orderInornate(String order) {
		return OrderExpression.getOrderInornateExpression(order);
	}

	/**
	 * 将属性按ASC排序,不会自动追加别名
	 * 
	 * @param property
	 *            属性名
	 * @return 返回排序表达式
	 */
	public static OrderExpression ascInornate(String property) {
		return OrderExpression.getAscOrderInornateExpression(property);
	}

	/**
	 * 将属性按DESC排序,不会自动追加别名
	 * 
	 * @param property
	 *            属性名
	 * @return 返回排序表达式
	 */
	public static OrderExpression descInornate(String property) {
		return OrderExpression.getDescOrderInornateExpression(property);
	}

	/**
	 * 将属性按指定的规则排序,不会自动追加别名
	 * 
	 * @param property
	 *            属性名
	 * @param mode
	 *            排序规则，ASC或者DESC
	 * @return 返回排序表达式
	 */
	public static OrderExpression orderInornate(String property, String mode) {
		return OrderExpression.getOrderInornateExpression(property, mode);
	}

}
